package com.hezhiqin.LazyInnerClassSingleton;

public class LazyInnerClassSingleton {

    //采用静态内部类的方式来实现单例模式

    private LazyInnerClassSingleton() {
        System.out.println("外部类加载");
        //现在就已经初始化了
        if(LazyHolder.LAZY != null){
            throw new RuntimeException("不允许创建多个实例");
        }
    }

    //每一个关键字都不是多余的
    //static 是为了使单例的空间共享
    //保证这个方法不会被重写，重载
    public static final LazyInnerClassSingleton getInstance(){
    //在返回结果以前，一定会先加载内部类
        return LazyHolder.LAZY;
    }
    //内部类加载机制：外部类，和内部类都同时加载
    private static class LazyHolder{

        private static final LazyInnerClassSingleton LAZY = new LazyInnerClassSingleton();
    }


}
